﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

using MySql.Data.MySqlClient;
using MySql.Data.Types;
using System.Data.Sql;
using System.Data.SqlClient;

namespace GCon
{
    /// <summary>
    /// Clase contenedore de Asignatura
    /// </summary>
    public class Con_Asignatura
    {
        /// <summary>
        /// Constructor por defecto
        /// </summary>
        public Con_Asignatura()
        {
        }

        /// <summary>
        /// Constructor con todos los parametros
        /// </summary>
        /// <param name="ID_PK"></param>
        /// <param name="NOMBRE"></param>
        /// <param name="DESCRIPCION"></param>
        /// <param name="PRECIO"></param>
        public Con_Asignatura(String ID_PK, String NOMBRE, String DESCRIPCION, String PRECIO)
        {
            _ID_PK = ID_PK;
            _NOMBRE = NOMBRE;
            _DESCRIPCION = DESCRIPCION;
            _PRECIO = PRECIO;
        }

        /// <summary>
        /// Constructor de copia
        /// </summary>
        /// <param name="otra"></param>
        public Con_Asignatura(Con_Asignatura otra)
        {
            _ID_PK = otra._ID_PK;
            _NOMBRE = otra._NOMBRE;
            _DESCRIPCION = otra._DESCRIPCION;
            _PRECIO = otra._PRECIO;
        }

        /// Getters
        public String Get_ID_PK()
        {
            return this._ID_PK;
        }
        public String Get_NOMBRE ()
        {
            return this._NOMBRE;
        }
        public String Get_DESCRIPCION ()
        {
            return this._DESCRIPCION;
        }
        public String Get_PRECIO()
        {
            return this._PRECIO;
        }
        public String Get_ID_GRUPO()
        {
            return this._ID_GRUPO;
        }
        public String Get_COD_GRUPO()
        {
            return this._COD_GRUPO;
        }
        public String Get_NOM_GRUPO()
        {
            return this._NOM_GRUPO;
        }
        public String Get_NOTA()
        {
            return this._NOTA;
        }
        /// Setters
        public void Set_ID_PK(String parametro)
        {
            this._ID_PK = parametro;
        }
        public void Set_NOMBRE(String parametro)
        {
            this._NOMBRE = parametro;
        }
        public void Set_DESCRIPCION(String parametro)
        {
            this._DESCRIPCION = parametro;
        }
        public void Set_PRECIO(String parametro)
        {
            this._PRECIO = parametro;
        }
        public void Set_ID_GRUPO(String parametro)
        {
            this._ID_GRUPO = parametro;
        }
        public void Set_COD_GRUPO(String parametro)
        {
            this._COD_GRUPO = parametro;
        }
        public void Set_NOM_GRUPO(String parametro)
        {
            this._NOM_GRUPO = parametro;
        }

        public void Set_NOTA(String parametro)
        {
            this._NOTA = parametro;
        }

        /// <summary>
        /// Procedimiento de carga.
        /// Recupera de la BBDD el curso con Id = IdAsignatura.
        /// </summary>
        /// <param name="IdAsignatura"></param>
        public void CargaAsignatura(int IdAsignatura)
        {
            MySqlConnection oConexion;
            MySqlDataAdapter oAdaptador;
            DataSet ds;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";
            oConexion.Open();

            llamada = "CALL CargaAsignatura ( '" + IdAsignatura + "' );";
            oAdaptador = new MySqlDataAdapter(llamada, oConexion);
            ds = new DataSet();
            oAdaptador.Fill(ds, "Tabla");

            foreach (DataRow dr in ds.Tables[0].Rows)
            {
                this._ID_PK = dr["CURSO_ID_PK"].ToString();
                this._NOMBRE = dr["CURSO_NOMBRE"].ToString();
                this._DESCRIPCION = dr["CURSO_DESCRIPCION"].ToString();
                this._PRECIO = dr["CURSO_PRECIO"].ToString();
            }

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de inserción.
        /// Inserta en la BBDD un Asignatura.
        /// </summary>
        public void InsertaAsignatura()
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL InsertaAsignatura ( '" + this._NOMBRE + "','" + this._DESCRIPCION + "','" + this._PRECIO + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de modificación.
        /// Modifica en la BBDD un Asignatura.
        /// </summary>
        public void ModificaAsignatura()
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL ModificaAsignatura ( '" + this._ID_PK + "','" + this._NOMBRE + "','" + this._DESCRIPCION + "','" + this._PRECIO + "','" + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// <summary>
        /// Procedimiento de eliminación.
        /// Elimina de la BBDD un Asignatura.
        /// </summary>
        public void EliminaAsignatura()
        {
            MySqlConnection oConexion;
            MySqlCommand oComando;
            String llamada;

            oConexion = new MySqlConnection();
            oConexion.ConnectionString = "Server=localhost;Database=MERYLAND;Uid=root;Pwd=MERYLAND;";

            llamada = "CALL EliminaAsignatura ( '" + this._ID_PK + "' );";
            oComando = new MySqlCommand(llamada, oConexion);

            oConexion.Open();
            oComando.ExecuteReader();

            oConexion.Close();
        }

        /// Atributos
        private String _ID_PK;
        private String _NOMBRE;
        private String _DESCRIPCION;
        private String _PRECIO;
        //Atributos especiales solo gestionados desde profesor
        private String _ID_GRUPO;
        private String _NOM_GRUPO;
        private String _COD_GRUPO;
        //Atributo especial para boletin de notas
        private String _NOTA;
        
    }
}
